#!/bin/bash

shopt -s nocasematch

INPUTFILE="${1:-NOFILE}"
OUTPUTFILE="${2:-out.png}"
RES_SIZE="${3:-48x48}"

if [ "${INPUTFILE}" = "NOFILE" ]; then echo "No input file!" && exit 1; fi

TEMPFILE1="$(mktemp)"
TEMPFILE2="$(mktemp)"

wrestool --extract --type=group_icon "${INPUTFILE}" 2>/dev/null >"${TEMPFILE1}" || (echo "Fail to extract!" && exit 1)
if [ -s "${TEMPFILE1}" ]; then
	read OFFSET INDEX < <(
		icotool --list "${TEMPFILE1}" | awk '{
			ci=int(substr($2,index($2,"=") + 1));
			cw=int(substr($3,index($3,"=") + 1));
			cb=int(substr($5,index($5,"=") + 1));
				if ((cw > w && cw <= 256) || (cw == w && cb > b)) {
				b = cb;
				w = cw;
				i = ci;
			}
		}
		END {
			print 16 + (256 - w) / 2, i;
		}'
	)

	if [ "${INDEX}" = '' ]; then
		INDEX=1
		OFFSET=20
	fi

	icotool --extract --index="${INDEX}" "${TEMPFILE1}" -o "${TEMPFILE2}"
	ICON="${TEMPFILE2}"
	mogrify -resize "${RES_SIZE}" "${ICON}"
fi

cp "${ICON}" "${OUTPUTFILE}"
rm "${TEMPFILE1}" "${TEMPFILE2}"
